6 大顶会 × 58 款代表性漏洞挖掘产品,覆盖 8 大技术方向——这只是冰山一角。
每一款产品的共同天花板:缺乏输入结构定义。
7884 补上这块拼图——给样本,出结构,20 种输出格式直接喂给下游。
用途:利用控制流和数据流特征自动识别 magic byte 位置,对关键字节进行定向变异,选择能触发更深路径的种子。
magic byte 识别依赖运行时动态污点分析,对于复杂的长度字段、校验和、嵌套结构等约束无法识别。
7884 直接产出 完整的字段布局和约束关系,VUzzer 无需再从运行时猜测,变异始终在结构合法的范围内进行。
用途:使用梯度下降算法求解路径约束,结合字节级污点分析绕过 magic bytes 等复杂约束,不依赖重量级符号执行引擎。
梯度下降不知道输入的结构边界——可能花大量计算在同一个字段内部微调,而不是跨越字段边界探索新路径。
7884 提供 字段边界信息,Angora 的梯度下降可直接定位到需要求解的约束字段,减少无效计算。
用途:通过分析控制流图为每条边分配唯一哈希,消除 AFL 中的路径哈希碰撞问题,提供更精确的覆盖率反馈。
即使覆盖率反馈再精确,如果变异产生的输入 99% 都因结构不合法被拒绝,精确反馈也无用武之地。
7884 产出 AFL 字典(结构感知的 token 字典),CollAFL 可以直接加载。精确的覆盖率反馈 + 结构化的变异 = 双重提升。
用途:使用粒子群优化算法(PSO)自动优化 AFL 的变异算子调度策略,根据历史效果动态选择最优变异算子组合。
MOpt 优化了"用什么变异算子",但变异对象仍然是原始字节流。最优算子作用于错误的位置,效果大打折扣。
7884 产出 AFL 字典 + 字段边界信息,MOpt 的 PSO 调度不仅优化算子选择,还能优化 算子作用的字段位置。最优算子 + 最优位置 = 变异效率最大化。
用途:通过运行时对比发现输入中的哪些字节直接出现在程序状态中,精准定位需要变异的关键字节。
映射依赖运行时对比,一次运行可能只暴露表层字段,深层嵌套字段的映射需要多次迭代才能发现。
7884 提供 完整的字段边界和嵌套关系,Redqueen 可从一开始就获知所有字段的位置,映射效率显著提升。
用途:通过观察程序对输入不同字节的访问模式,在运行时自动推断每个字节的类型,针对不同类型采用不同变异策略。
类型探测依赖运行时反馈,需要大量执行才能收敛。且类型推断容易出错——长度字段可能被误判为普通数据。
7884 直接提供 精确的字段类型定义(长度、偏移、枚举、校验和、数据块),ProFuzzer 无需再猜测。直接进入最优变异策略。
用途:结合梯度引导变异和进度调度,在多路径分支上同时保持前进步伐。避免 fuzzer 在某个分支上浪费大量时间。
梯度计算在字节级别进行,没有结构感知。大量计算浪费在同一个字段内部的微调上。
7884 提供 字段边界,PANGOLIN 的梯度计算可聚焦在字段级别——每个字段作为一个整体参与梯度优化,计算效率提升。
用途:通过模糊数据流校验识别"约束输入"的关键字节,针对这些字节进行有导向的变异,显著提升对 magic byte 等约束的处理效率。
污点分析能识别哪些字节被用于约束,但不知道这些字节属于哪个字段、字段之间有什么约束关系。
7884 提供 字段边界 + 约束关系,GreyOne 的污点分析从"字节级"升级到"字段级"。
用途:将 sanitizer 的运行时检测信号直接作为覆盖率反馈的一部分,让 fuzzer 优先探索能触发 sanitizer 警告的路径。
触发 sanitizer 需要输入能到达深层的内存操作代码。由于种子缺乏结构信息,大量输入在浅层解析阶段就被拒绝。
7884 的 结构感知种子 确保输入能穿透解析层到达深层逻辑,sanitizer 的检测能力被真正释放。
用途:"Survival of the Fittest Fuzzing Mutators"——使用进化策略动态选择和组合变异算子,让更有效的变异算子获得更多使用机会。
进化策略优化了"用哪个变异算子",但所有算子都在字节级别操作,没有一个能进行字段级的结构化变异。
7884 的 AFL 字典 让进化策略不仅能选择算子,还能选择 变异的目标字段,提升进化策略的收敛速度。
用途:通过更大规模的变异操作(大段插入、删除、替换)来发现传统小步变异无法触达的深层漏洞。
大规模变异虽然能跳过浅层路径,但也更容易破坏输入的结构完整性,需要"步子大"和"结构合法"之间的平衡。
7884 提供 结构约束,FishFuzz 的大规模变异可在 保持结构合法 的前提下进行。步子大 + 结构合法 = 深层漏洞发现效率最大化。
用途:整合 AFL 系列多年研究成果(MOpt 调度、QSYM concolic、Redqueen 映射、Custom Mutator API 等),GitHub 上万星,现代 fuzzing 研究的事实标准基准平台。
虽然提供 Custom Mutator 接口允许注入结构感知变异器,但编写 Custom Mutator 需要用户完全理解目标格式的结构——这恰恰是模糊测试中最稀缺的资源。
7884 直接产出 AFL 字典 + AFL++ Custom Mutator 插件(.afl.c 文件),用户只需将其放入 AFL++ 目录,零配置即可获得结构感知的变异能力。
用途:覆盖率引导 fuzzer 卡在复杂约束时,自动调用符号执行引擎求解新输入,突破深层路径。
符号执行极为耗时。Driller 对每个卡住的路径都调用符号执行,大量调用发生在结构相同的输入上。
7884 产出 结构感知种子:种子天然符合目标格式的字段布局和约束关系,fuzzer 不再需要频繁调用符号执行绕过结构校验,符号执行调用量显著减少。
用途:为混合 fuzzing 量身打造的符号执行引擎,通过放弃完备性换取速度,使用动态二进制翻译减少符号模拟开销。与 AFL 协同高效求解路径约束。
QSYM 虽比传统符号执行快,但 concolic 执行仍然比纯变异慢几个数量级。大量时间浪费在求解可由结构定义直接解决的约束上——如长度字段和校验和。
7884 提供 结构约束关系图,QSYM 可直接跳过已知的结构约束(长度、校验和、枚举值),仅对真正的业务逻辑约束进行符号执行,concolic 执行调用量显著减少。
用途:通过移除目标程序中的 sanitizer check,让 fuzzer 能够到达原本被"保护"住的深层路径。
程序变换后,原本合法的输入可能在变换后的程序中失效。对于结构复杂的输入格式,变换可能破坏输入解析逻辑。
7884 提供 结构感知种子,确保 T-Fuzz 变换前后的输入都是结构合法的。CrashAnalyzer 的误报过滤也更精准。
用途:将"哪些字节取值最可能导致新覆盖"建模为机器学习问题,学习概率模型指导符号执行解决路径约束。
ML 模型预测字节重要性,但完全不知道输入的结构信息。可能把大量资源分配给同一字段内部的不同字节。
7884 的 字段权重和关系图 直接喂给 ML 模型,模型从一开始就拥有结构先验。ML 预测精度和训练收敛速度均有提升。
用途:从已有样本中学习概率上下文相关文法,用于生成结构良好的初始种子。主要针对 XML/XSLT 等结构化输入解析器。
对于全新的、私有的二进制格式,完全没有样本可用——冷启动问题严重。
7884 从少量样本中产出 结构定义(文法级别),Skyfire 可在极少先验样本下生成高质量种子,大幅缓解冷启动问题。
用途:第一个将基于语法的输入生成与覆盖率反馈结合的模糊测试工具。将输入解析为语法树,在树结构上进行语义感知的变异。
必须人工编写 CFG 文法。对于每一种新格式,用户需要手工编写完整的上下文无关文法——极其耗时。对于未知私有格式,根本无法编写。
7884 自动产出 CFG 文法定义,零人工编写。Nautilus 的适用范围从"有人写过文法的格式"扩展到 任意未知二进制格式。
用途:通过从样本中自动推断语法,结合覆盖率引导的灰盒模糊测试,消除了人工编写语法的需求。
语法推断的准确性有限——从样本推断出的语法往往不完整,遗漏低频规则和深层嵌套结构。且推断出的语法缺乏语义信息(长度字段、校验和、偏移关系)。
7884 直接提供 精确且语义完整的结构定义,不仅包含语法规则,还包含长度、校验和、偏移等语义约束。GRIMOIRE 的覆盖率在 7884 结构定义辅助下可显著提升。
用途:使用 Weizmann 自动机建模输入格式,基于自动机生成符合格式约束的输入,同时保留覆盖率引导的变异能力。
自动机的构建需要大量有效样本。对于样本稀少的格式,自动机会严重不完整。
7884 的 结构定义 可直接转化为 Weizmann 自动机的状态和转移规则,在极少量样本下即可构建完整的输入模型。
用途:利用语义驱动的方法自动推断二进制消息格式中的字段边界和类型,是协议逆向领域的代表性工作。
字段推断的准确率有限,推断出的字段缺乏语义标注,只能提供字段边界,无法提供字段之间的关系。
7884 与 BinaryInferno 互补协作——BinaryInferno 提供快速字段边界推断,7884 提供 精确的字段语义和关系。两者结合,准确率和完整性大幅提升。
用途:不是直接变异输入,而是让正常程序生成输出,在生成过程中注入故障,利用程序自身的领域知识产生"看似合法但暗藏问题"的测试输入。
对于未知格式,没有现成的生成程序可用。Fuzztruction 需要一个能生成合法输出的"生产者"程序。
7884 自动产出 格式结构定义,可基于结构定义自动生成一个简单的"生产者"程序。Fuzztruction 可对任意未知格式生成测试输入。
用途:基于 010 Editor 的 Binary Template 格式,将结构感知的模糊测试工程化。用户编写 BT 描述,FormatFuzzer 自动生成和变异结构合法的输入。
必须人工编写 Binary Template——这是整个流程最耗时的步骤。编写一个中等复杂格式的 BT 模板需要数天到数周。
7884 从二进制样本中归纳出结构定义,直接生成 Binary Template 文件,FormatFuzzer 立即加载。零人工编写模板。FormatFuzzer 的工程化能力 + 7884 的自动模板生成 = 全自动结构感知 fuzzing。
用途:通过对 Linux 内核驱动源码进行静态分析,自动提取设备驱动号、ioctl 命令码、文件类型等接口信息,基于接口结构生成测试用例。
严重依赖内核源码。对于闭源驱动(如 Android 厂商私有驱动、macOS/Windows 驱动),Difuze 完全无法工作。
7884 对驱动二进制直接归纳 接口结构定义(ioctl 命令码、参数结构体布局、返回值类型),无需任何源码。Difuze 的能力边界从"有源码的 Linux 驱动"扩展到 所有平台的闭源驱动。
用途:利用 Intel PT 和 VT-x 虚拟化技术,无需修改目标内核即可采集覆盖率反馈。第一个能对闭源内核进行覆盖率引导模糊测试的工具。
kAFL 解决了"如何采集覆盖率"的问题,但输入结构完全未知。内核通过系统调用接口接收数据,每个 syscall 的参数结构体布局、字段类型、合法取值范围全是黑盒,变异近乎随机。
7884 产出 syscall 接口结构定义(参数布局、字段类型、长度约束),kAFL 的变异从随机字节变为 结构化字段级变异。内核深层路径的探索效率提升。
用途:从现有内核测试用例中蒸馏出最小但能保留最大覆盖率的种子集,显著提升 Syzkaller 等内核 fuzzer 的效率。
MoonShine 只能优化已有种子,无法创造新的种子。对于新发现的接口,种子集本身就没有覆盖。
7884 生成 结构化 syscall 序列——基于接口结构定义自动生成合法的 syscall 调用序列作为初始种子。MoonShine 可以对 任意新接口从零开始构建高质量种子集。
用途:通过主动映射伪设备内存,使 Linux 内核外设驱动(如 USB、PCI 驱动)中的漏洞可被触发并定位。
PeriScope 能模拟设备,但不知道设备应该发送什么格式的数据包。USB 描述符、PCI 配置空间等格式完全未知。
7884 归纳 外设接口数据结构(USB 描述符布局、PCI 配置空间字段、MMIO 寄存器映射),PeriScope 的模拟设备可发送 结构合法的数据包。
用途:针对 macOS 闭源内核驱动,自动从现有代码中挖掘并合成 syscall 序列,自动化生成 macOS 驱动 fuzzing 的接口描述。
需要已有的程序样本做逆向合成。如果某个驱动从未被任何已知程序调用过,SyzGen 无法生成接口描述。
7884 直接对驱动二进制进行 接口结构归纳,无需任何用户态程序样本。SyzGen 的适用范围从"有调用样本的驱动"扩展到 所有闭源驱动。
用途:基于蒙特卡洛树搜索优化 syscall 序列生成,改进 Syzkaller 的资源调度,优先探索高价值 syscall 序列。
MCTS 搜索需要每个 syscall 的参数结构——目前全部依赖手写的 syscall 接口描述,编写成本极高。
7884 自动归纳 syscall 接口结构,生成完整的 syz description。搜索空间从"有人写过的 syscall"扩展到 所有可归纳的 syscall。
用途:基于虚拟机快照(KVM + Intel PT)的内核 fuzzer,利用快照机制实现极快的执行恢复,支持对闭源内核/固件的高效 fuzzing。
NYX 解决了"执行速度"问题,但变异仍然是随机字节。快照再快,如果变异是盲目的,效率仍然有限。
7884 提供 结构感知种子,NYX 的每次迭代都发送结构合法的输入。快照恢复的速度优势 + 结构感知的变异精度 = 相得益彰。
用途:通过静态/动态分析识别驱动内部状态变量,将状态空间纳入覆盖反馈,更深入地探索驱动状态机相关漏洞。
识别状态变量后,需要每个状态对应的输入结构——目前状态变量的语义和结构关系需要大量人工分析。
7884 归纳 状态字段结构,StateFuzz 的状态探索从"知道有哪些状态"升级为 知道如何触发每个状态转换。
用途:"No Grammar, No Problem"——声称不需要系统调用语法描述也能对 Linux 内核进行 syscall 模糊测试。配置文件大小仅为 Syzkaller 语法的 1.7%。
完全没有结构信息时,覆盖率存在硬上限——syscall 参数之间的复杂约束关系不是靠"重塑输入空间"能解决的。
7884 提供 完整的 syscall 参数结构,弥补 FUZZNG 无语法方案的硬上限。"无语法"的灵活性 + "有结构"的精度 = 兼顾覆盖广度和深度。
用途:利用固件返回的错误消息中的"片段"作为反馈信号引导变异方向。无需源码、无需插桩、无需协议规范。
错误消息片段作为反馈信号非常弱——只能告诉 fuzzer "这个输入不对",无法告诉它"哪里不对"。
7884 直接产出 固件协议结构,Snipuzz 不再需要依赖错误消息进行推断。从"通过错误消息慢慢摸索"变成 直接拿到结构蓝图。
用途:通过分析 IoT 设备的配套 App,自动识别 App 与设备之间的通信接口和触发点,生成面向 IoT 设备的模糊测试输入。
完全依赖配套 App 的存在。如果设备没有配套 App,DIANE 无法找到触发点。且通信协议的数据格式仍然未知。
7884 直接归纳 IoT 通信协议的数据结构,无需 App 分析。DIANE 的触发点识别 + 7884 的协议结构 = 从触发点到变异策略的完整链路。
用途:使用精确的 MMIO 访问建模来模拟外设行为,在不需要真实硬件的情况下对嵌入式固件进行高效的模糊测试。
MMIO 建模需要精确知道每个外设的寄存器布局和访问模式,目前需要大量逆向工程,一个外设的建模可能耗时数周。
7884 自动归纳 外设接口结构(寄存器地址、位域布局、读写属性),Fuzzware 的 MMIO 建模从手动逆向变为 自动生成。
用途:通过"弯曲"虚拟设备的输入空间来测试虚拟机监控器中的虚拟设备实现。
弯曲策略需要了解虚拟设备的接口结构——PIO 端口、MMIO 区域、DMA 描述符格式等,适配成本高。
7884 自动归纳 虚拟设备接口结构,Morphuzz 的弯曲策略可以自动适配不同设备,可测试设备种类显著扩展。
用途:针对 USB Gadget(设备端)驱动栈的状态感知模糊测试。USB Gadget 是手机、IoT 设备中实现 USB 设备功能的关键组件。
USB Gadget 的接口结构(描述符格式、端点配置、传输类型)高度复杂且依赖具体设备,适配新设备成本极高。
7884 自动归纳 USB Gadget 描述符结构和端点配置,FuzzUSB 可直接适配任意设备。从"逐设备手工适配"升级为自动适配。
用途:USB 协议安全方向的标杆工作,专注于 USB 主机端驱动和协议栈的漏洞挖掘。
USB 协议高度复杂——描述符有数十种类型,每种有独特的字段布局和约束关系。USB 新规范(如 USB4)的适配周期很长。
7884 自动归纳 USB 描述符结构,ReUSB 的测试覆盖从已知描述符扩展到 所有 USB 规范定义的描述符类型。
用途:黑盒 IoT 安全研究中的代表作。通过发送请求并观察设备的响应内容,反推设备的内部行为和处理逻辑。不需要固件、不需要源码。
请求体的数据格式完全未知。大量请求因格式错误被设备直接拒绝。
7884 归纳 请求体结构(字段布局、参数类型、约束关系),LABRADOR 的请求生成从"随机试探"变为"结构合法的精准变异",请求被接受比例显著提升。
用途:通过对整个系统的源码进行静态分析,自动推导出库的 API 使用方式和参数约束,然后自动生成专用 fuzzer。
严重依赖源码分析。对于闭源库、二进制 SDK、第三方提供的 .so/.dll 文件,FuzzGen 完全无法工作。
7884 对闭源库二进制直接归纳 API 接口结构(参数布局、类型约束、调用约定),FuzzGen 的能力边界从"有源码的库"扩展到 任意闭源二进制库。
用途:利用大语言模型理解协议规范并生成协议消息,指导协议状态空间的探索。将 LLM 的自然语言理解能力与 fuzzing 的覆盖率引导结合。
LLM 依赖协议规范文本来生成消息。对于私有协议和未文档化的协议,LLM 没有先验知识,生成的协议消息质量急剧下降。
7884 提供 真实的协议结构定义,ChatAFL 的 LLM 提示词获得精确的结构先验。LLM 的生成能力 + 7884 的结构约束 = 私有协议也能被 LLM 引导的 fuzzing 覆盖。
用途:国内 CDN 安全研究的代表作。通过发送精心构造的 HTTP 请求到 CDN 节点,对比不同节点返回的响应差异,发现 CDN 配置不一致、缓存投毒、请求走私等安全漏洞。
CDN 厂商的私有 HTTP 扩展头格式完全未知。REQSMINER 需要人工抓包分析这些扩展头才能生成有效的测试请求。
7884 自动归纳 HTTP 扩展头结构,REQSMINER 的测试请求可自动覆盖所有已知和未知的扩展头。CDN 私有接口的测试覆盖从人工挖掘变为自动发现。
用途:针对 Java 程序的算法复杂度拒绝服务漏洞的 micro-fuzzing 工具。通过引导式变异发现导致性能退化的方法调用序列。
API 调用序列靠随机生成,缺乏类型约束和参数结构信息。大量序列因参数不合法被 JVM 拒绝。
7884 分析 Java 二进制数据结构(序列化格式、类文件布局),为 HotFuzz 提供参数结构约束,无效序列比例大幅降低。
用途:专门针对 JS 引擎中 C++ 绑定层的 fuzzer。绑定层是 JS 和底层 C++ 之间的桥梁,容易出现类型混淆和内存安全问题。
绑定代码的结构需要深入理解引擎内部实现。对于新的 JS 引擎或新增 API,分析成本高。
7884 分析 JS 引擎二进制中的字节码格式定义,辅助生成结构合法的 JS 调用序列,无需人工分析绑定层。
用途:Google 出品的 JS 引擎 JIT 编译器专用 fuzzer。使用中间表示 FuzzILLI IR 生成能触发 JIT 编译的 JS 代码,在 V8、SpiderMonkey、JavaScriptCore 中发现大量漏洞。
需要手工编写 FuzzILLI IR 描述。当 JS 语言新增特性时,手工更新 IR 描述的成本高,对新特性的覆盖总是滞后。
7884 分析 FuzzILLI IR 二进制格式定义,自动辅助 IR 描述生成,新特性支持的滞后周期从手工编写降为半自动。
用途:首个专门针对 JS JIT 编译器优化路径的模糊测试工具,在最新 JS 引擎中发现 36 个未知漏洞。
需要描述 JS 的优化路径——哪些代码模式触发哪些优化、优化之间的依赖关系。这些信息随引擎版本不断变化,维护成本高。
7884 分析 JIT 引擎字节码二进制格式定义,辅助生成触发优化路径的输入,优化路径描述从手工分析降为半自动。
用途:专门针对不受控的内存消耗漏洞(可能导致 DoS)的 fuzzer,通过监控内存分配量作为反馈,变异生成能最大化内存占用的输入。
由于输入结构未知,不知道哪个字段是长度字段、哪个字段控制分配大小。大量变异被浪费在结构调整上。
7884 提供 长度字段的精确位置,MemLock 可直接定位到控制内存分配大小的关键字段。从"试探性变异"变成 精准打击。
用途:允许用户通过简单的标注向 fuzzer 注入领域知识,指导 fuzzer 向特定状态空间探索。
标注完全依赖人工——理解目标程序的内部状态本身就是一项巨大的逆向工程工作。
7884 自动产出 结构标注(字段类型、状态变量、约束关系),IJON 的标注可直接从 7884 的输出中 自动生成。
用途:Google Project Zero 开发的纯二进制覆盖率引导 fuzzer,使用动态二进制插桩在无源码环境下采集覆盖率。
变异策略是经典的字节级随机变异。对于 Windows/macOS 上复杂的二进制文件格式,随机变异几乎无法通过结构校验。
7884 提供 结构感知种子 + AFL 字典,Jackalope 在纯黑盒场景下也能进行结构化变异。从"黑盒随机试探"升级为 "黑盒结构化攻击"。
用途:用 Rust 编写的模糊测试组件库,将 fuzzer 的各组件拆分为独立模块,用户可自由组合构建定制化 fuzzer。
框架提供了极大的灵活性,但结构输入需要用户自己提供。用户需要自己实现结构感知的变异器。
7884 的 20 种输出格式 可直接作为 LibAFL 的结构化输入源。LibAFL 的灵活性 + 7884 的结构定义 = 全自动结构感知 fuzzer 工厂。
用途:针对区块链共识协议实现的状态感知模糊测试框架。区块链共识协议有复杂的状态机,LOKI 专门测试状态转换中的漏洞。
需要人工编写协议状态机描述——每个状态、每个消息类型、每个状态转换条件。对于新协议,编写成本极高。
7884 自动归纳 共识协议的消息结构和状态转换,LOKI 的状态机从手工编写变为 自动生成。
用途:不直接变异文件输入,而是变异程序运行时的内存数据结构,让程序继续使用被篡改的内存数据,发现内存损坏漏洞。
需要知道内存中数据结构的精确布局——结构体每个字段的偏移、类型、大小。手工定义的工作量极大。
7884 从样本中归纳出内存结构,自动产出 内存结构定义(C Header、Rust Struct、Go Struct),FuzzInMem 可直接使用。内存结构定义从手工编写变为 自动生成。
用途:使用大语言模型进行通用模糊测试——让 LLM 理解任意输入格式并生成测试用例。
LLM 生成的输入缺乏结构一致性。LLM 不理解二进制格式的精确约束,生成的输入可能语法正确但语义错误。
7884 提供 精确的结构定义 作为 LLM 的约束条件,Fuzz4All 的生成被限制在结构合法的范围内。LLM 的创造力 + 7884 的结构约束 = 既有创新性又有结构保证的测试用例生成。
用途:基于硬件虚拟化接口的通用虚拟机监控器模糊测试,在 QEMU、Hyper-V、macOS 中发现 26 个新漏洞。
PIO/MMIO/Hypercall 等硬件接口的数据结构高度依赖具体设备,需要针对每种设备进行手工接口建模。
7884 归纳 硬件接口数据结构(寄存器布局、位域定义、访问约束),HYPERPILL 的接口建模从手工变为 自动适配。
用途:"Target States Driven Directed Fuzzing"——自动从漏洞报告或静态分析结果中提取目标状态,缩小 fuzzing 范围。
需要知道输入中哪些字段影响状态转换——状态与输入字段之间的映射关系需要大量人工分析。
7884 提供 状态字段结构和状态转换关系,SDFuzz 能直接建立"输入字段 → 状态转换"的映射,定向效率提升。
用途:面向通用数据库管理系统(含关系型与 NoSQL)的模糊测试框架,在 8 个数据库中发现 40 个漏洞。
需要描述数据库查询语言的结构——每种数据库的查询语言都有独特的扩展和差异,适配成本高。
7884 归纳 查询语言结构定义,BUZZBEE 的查询语言描述从手工编写变为 自动生成。
用途:针对代码提交的定向灰盒模糊测试。通过路径前缀代码分析引导输入生成,平均加速比 10.3 倍。
生成的输入可能因为结构不合法而无法到达目标代码路径,定向效率仍然受限。
7884 提供 结构感知种子,WAFLGO 的定向变异在结构合法的前提下进行。定向效率进一步提升。
用途:结合 LLM 生成目标特定初始种子与崩溃数据重用技术,对 BusyBox(嵌入式 Linux 核心工具集)进行模糊测试。
LLM 生成的种子缺乏真实的结构信息——命令行参数格式、配置文件格式等,LLM 只能基于训练数据猜测。
7884 提供 真实的 BusyBox 输入结构,LLM 生成的种子天然结构合法。种子有效率显著提升。
每一款产品至少受益于一种输出格式,多数产品受益于 2-3 种。
本白皮书以六大顶会近十年为样本池,逐款分析了 58 款代表性漏洞挖掘产品。这只是冰山一角——六大顶会历年模糊测试相关论文超过 150 篇,GitHub 上还有数以万计的开源 fuzzer。但在所有抽样产品中,无一例外,7884 的输出均能显著增强其能力。
7884 支持的产品覆盖了 所有 8 大技术路线:通用灰盒模糊测试、混合与符号执行、语法与格式感知、内核与驱动、IoT/嵌入式/固件、协议与网络、语言引擎与 JIT、框架/AI/定向。7884 不与任何模糊测试产品竞争。7884 是它们所有人的上游供应商。 给样本,出结构。58 款抽样产品,全部受益。冰山一角,实则万千。